//#include <stdio.h>
//int main(int argc, char* argv[])
//{
//    int i = 0;
//    for(i = 0; i < argc; ++i)
//    {
//        printf("argv[%d]:%s\n", i, argv[i]);
//    }
//    return 0;
//}


//#include <stdio.h>
//#include <string.h>
//int main(int argc, char* argv[])
//{
//    if(argc != 2)
//    {
//        printf("./myProcess.c [-a][-b][-c]\n");
//        return 1;
//    }
//    const char* tmp = argv[1];
//    if(strcmp(tmp, "-a") == 0)
//        printf("功能一\n");
//    else if(strcmp(tmp, "-b") == 0)
//        printf("功能二\n");
//    else if(strcmp(tmp, "-c") == 0)
//        printf("功能三\n");
//    else 
//        printf("./myProcess.c [-a][-b][-c]\n");
//    return 0;
//}

//#include <stdio.h>
//int main(int argc, char* argv[], char* env[])
//{
//    (void)argc;
//    (void)argv;
//    //获取环境变量方法一
//    for(int i = 0; env[i]; ++i)
//        printf("env[%d]->%s\n", i, env[i]);
//    return 0;
//}

//#include <stdio.h>
//#include <stdlib.h>
//int main()
//{
//    //获取环境变量方法二
//    char * tmp = getenv("PATH");
//    if(tmp == NULL)
//        printf("  \n");
//    else 
//        printf("%s\n", tmp);
//    return 0;
//}


//#include <stdio.h>
//extern char** environ;//声明
//int main()
//{
//    //获取环境变量方法三
//    for(int i = 0; environ[i]; ++i)
//    {
//        printf("environ[%d]->%s\n", i, environ[i]);
//    }
//    return 0;
//}


//写一个程序，只有我能执行，其他人一律不让执行
//#include <stdio.h>
//#include <string.h>
//#include <stdlib.h>
//int main()
//{
//    const char* tmp = getenv("USER");
//    if(tmp == NULL)
//        return 1;
//    if(strcmp(tmp, "hd") == 0)
//        printf("程序执行成功\n");
//    else 
//        printf("只有用户hd能执行\n");
//    return 0;
//}


//环境变量可以被子进程继承
#include <stdio.h>
#include <unistd.h>
int main(int argc, char* argv[], char* env[])
{
    pid_t id = fork();
    if(id == 0)
    {
        //子进程
        int i;
        for(i = 0; env[i]; ++i)
            printf("env[%d]->%s\n", i, env[i]);
    }
    else if(id < 0)
    {
        //创建子进程失败
        perror("fork");
        return 1;
    }
    else 
    {
        //父进程
        sleep(5);
    }
    
    return 0;
}









